import java.lang.reflect.Constructor;

/**
 * 利用反射动态创建对象实例
 *
 * Class对象的newInstance()
 * 使用Class对象的newInstance()方法来创建该Class对象对应类的实例，但是
 * 这种方法要求改Class对象对应的类有默认的空构造器。
 *
 * 调用Constructor对象的newInstance()
 * 先使用Class对象获取指定的Constructor对象，在调用Constructor对象的
 * newInstance()方法来创建Class对象类的实例，通过这种方法可以选定构造
 * 方法创建实例。
 */
public class ReflectDemo03 {
    public static void main(String[] args) throws Exception {
        //获取Student类的Class对象
        Class cls = Class.forName("Student");
        //使用 .newInstance方法创建对象
        Student stu = (Student) cls.newInstance();
        //获取构造方法并创建对象
        Constructor c = cls.getDeclaredConstructor();
        //创建对象并设置属性
        Student stu2 = (Student) c.newInstance();
    }
}
